﻿namespace ElencySolutions.MultipleProperty
{
    using System;

    /// <summary>
    /// Multiple property entity property attribute
    /// </summary>
    public class MultiplePropertyEntityPropertyAttribute : Attribute
    {

        #region Properties

        /// <summary>
        /// Gets or sets the caption.
        /// </summary>
        /// <value>
        /// The caption.
        /// </value>
        public string Caption { get; set; }

        /// <summary>
        /// Gets or sets the caption translation key.
        /// </summary>
        /// <value>
        /// The caption translation key.
        /// </value>
        public string CaptionTranslationKey { get; set; }

        /// <summary>
        /// Gets or sets the type.
        /// </summary>
        /// <value>
        /// The type.
        /// </value>
        public Type Type { get; set; }

        /// <summary>
        /// Gets or sets the index of the sort.
        /// </summary>
        /// <value>
        /// The index of the sort.
        /// </value>
        public int SortIndex { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is information property.
        /// </summary>
        /// <value>
        /// <c>true</c> if this instance is information property; otherwise, <c>false</c>.
        /// </value>
        public bool IsInformationProperty { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="MultiplePropertyEntityPropertyAttribute"/> is required.
        /// </summary>
        /// <value>
        ///   <c>true</c> if required; otherwise, <c>false</c>.
        /// </value>
        public bool Required { get; set; }

        /// <summary>
        /// Gets or sets the tab.
        /// </summary>
        /// <value>
        /// The tab.
        /// </value>
        public Type Tab { get; set; }

        /// <summary>
        /// Gets or sets the property settings creator.
        /// </summary>
        /// <value>
        /// The property settings creator.
        /// </value>
        public Type PropertySettingsCreator { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [use matching settings decorated on property type].
        /// </summary>
        /// <value>
        /// 	<c>true</c> if [use matching settings decorated on property type]; otherwise, <c>false</c>.
        /// </value>
        public bool UseMatchingSettingsDecoratedOnPropertyType { get; set; }

        /// <summary>
        /// Gets or sets the default value.
        /// </summary>
        /// <value>
        /// The default value.
        /// </value>
        public object DefaultValue { get; set; }

        #endregion Properties

    }
}
